#pragma once

#include "IBrushMonster.h"
#include "Common/Timer/TimerAxis.h"

class BrushGuide : public IBrushMonster, public ITimerHandler
{
public:
	BrushGuide();
	virtual ~BrushGuide();
	///////////////////////////////  IBrushMonster  ///////////////////////////////////////////
	virtual int8_t GetBrushType() { return (int8_t)EDuplicateBrushType::EDuplicateBrushType_Guide; };
	virtual bool Init(IDuplicate *pDuplicate);
	virtual void UnInit();
	virtual void StartBrush();
	virtual void StopBrush();
	//是否刷怪完成
	virtual bool FinishBrush();
	//区域刷怪
	virtual bool EnterAreaBrush(uint32_t areaId);
	virtual void BrushUpdate();
	virtual void OnMonterDead(uint64_t monsCid, uint32_t monsId, uint32_t count, int32_t formationId, uint64_t killerCid);
	/////////////////////////////// ITimerHandler ///////////////////////////////////////////
	virtual void OnTimer(uint32_t nTimerID) {};
	//初始化步骤引导和特效怪物组
	virtual void InitGuideMonsGroup();
	//刷新步骤引导和特效怪物组
	virtual void BrushGuideMonsGroup();
private:
	//NPC死亡
	void NpcDie(SET_UINT32 &setNpc);
	//NPC启用(可见，启动AI)
	void EnableNpc(SET_UINT32 &setNpc);
	//NPC禁用(不可见，停止AI)
	void DisableNpc(SET_UINT32 &setNpc);
private:
	IDuplicate *m_pDuplicate;
	NewBrushDataCfg *m_pBrush;
	bool m_bBrushFinish;
	bool m_bStart;
	SET_UINT64 m_setGuideGroup;//引导和特效怪物
};